package com.util.bitset;


import org.junit.Test;

import java.util.BitSet;
import java.util.TimerTask;

public class BitsetDemo {

    /**
     * 进行了一大波位运算，可以看下算法实现???
     * 这里的TOKEN是https://tools.ietf.org/html/rfc2616#section-2.2里面的token的结果
     * 除了CTLs和separators的字符
     */
    @Test
    public void test01() {
        final BitSet TOKEN;

        BitSet ctl = new BitSet(128);
        for (int i = 0; i <= 31; i++) {
            ctl.set(i);
        }
        ctl.set(127);

        BitSet separators = new BitSet(128);
        separators.set('(');
        separators.set(')');
        separators.set('<');
        separators.set('>');
        separators.set('@');
        separators.set(',');
        separators.set(';');
        separators.set(':');
        separators.set('\\');
        separators.set('\"');
        separators.set('/');
        separators.set('[');
        separators.set(']');
        separators.set('?');
        separators.set('=');
        separators.set('{');
        separators.set('}');
        separators.set(' ');
        separators.set('\t');

        TOKEN = new BitSet(128);
        TOKEN.set(0, 128);

        System.out.println("CTL ：" + ctl);
        System.out.println("TOKEN 与 ctl 异或前" + TOKEN);
        TOKEN.andNot(ctl);
        System.out.println("TOKEN 与 ctl 异或后" + TOKEN);

        System.out.println();

        System.out.println("separators " + separators);
        System.out.println("TOKEN 与  separators 异或前 ：" + TOKEN);
        TOKEN.andNot(separators);
        System.out.println("TOKEN 与  separators 异或后 ：" + TOKEN);

    }


}
